﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Bastanteo.Domain;

namespace Bastanteo.Negocio
{
    interface IAdministracionService
    {
        #region Métodos de soporte para entidad Rol
        Rol CrearRol(Rol rolACrear);
        Rol ObtenerRol(int codigo);
        Rol ModificarRol(Rol rolAModificar);
        void EliminarRol(Rol rolAEliminar);
        ICollection<Rol> ListarRoles();
        ICollection<Rol> ListarRolesXNombre(string nombre);
        #endregion

        #region Métodos de soporte para entidad Usuario
        Usuario CrearUsuario(Usuario ACrear);
        Usuario ObtenerUsuario(int codigo);
        Usuario ModificarUsuario(Usuario AModificar);
        void EliminarUsuario(Usuario AEliminar);
        ICollection<Usuario> ListarUsuarios();
        ICollection<Usuario> ListarUsuariosXBusqueda(string codigo, string usuario, int rolCodigo);
        #endregion

        #region Métodos de soporte para entidad Representante
        Representante CrearRepresentante(Representante ACrear);
        Representante ObtenerRepresentante(string codigo);
        Representante ModificarRepresentante(Representante AModificar);
        void EliminarRepresentante(Representante AEliminar);
        ICollection<Representante> ListarRepresenta();
        ICollection<Representante> ListarRepresentanteXBusqueda(string numdoc, string tipodoc, string representante, int cargoCodigo);
        #endregion

        #region Métodos de soporte para entidad Cargo
        Cargo CrearCargo(Cargo CargoACrear);
        Cargo ObtenerCargo(int codigo);
        Cargo ModificarCargo(Cargo CargoAModificar);
        void EliminarCargo(Cargo CargoAEliminar);
        ICollection<Cargo> ListarCargo();
        ICollection<Cargo> ListarCargoXNombre(string nombre);
        #endregion

        #region Métodos de soporte para entidad Grupo
        Grupo CrearGrupo(Grupo grupoACrear);
        Grupo ObtenerGrupo(int codigo);
        Grupo ModificarGrupo(Grupo grupoAModificar);
        void EliminarGrupo(Grupo grupoAEliminar);
        ICollection<Grupo> ListarGrupos();
        ICollection<Grupo> ListarGruposXNombre(string nombre);
        #endregion
    }
}
